package com.qyhl.webtv.basiclib.utils.fresco;

import android.app.Application;

import dagger.internal.Preconditions;

public class FrescoImageUtil {
    private static IImageManager mImageManager;
    private static RingComponent mRingComponent;

    /**
     * 初始化操作
     */
    public static void init(Application application) {
        mRingComponent =  DaggerRingComponent.builder().application(application).build();//如果提示找不到DaggerRingComponent类，请重新编译下项目。
    }

    /**
     * 开始构建
     */
    public static void create() {

        //图片加载模块的构建工作
        imageManager().init(mRingComponent.application(), mRingComponent.imageConfig());


    }

    /**
     * 获取RingComponent，从而获取RingComponent中提供的各对象。
     */
    public static RingComponent ringComponent() {
        return Preconditions.checkNotNull(mRingComponent, "RingComponent为空，请先在Application中调用DevRing.init(Application)方法进行初始化");
    }

    /**
     * 配置图片加载模块
     */
    public static ImageConfig configureImage() {
        return mRingComponent.imageConfig();
    }

    /**
     * 配置图片加载模块，用于替换默认的Glide
     * @param imageManager 要替换Glide的图片加载管理者
     */
    public static ImageConfig configureImage(IImageManager imageManager) {
        mImageManager = imageManager;
        return mRingComponent.imageConfig();
    }

    /**
     * 获取图片加载管理者
     */
    public static <T extends IImageManager> T imageManager() {
        if (mImageManager != null) {
            return (T) mImageManager;
        }
        return (T) mRingComponent.imageManager();
    }

}
